char trans_char(char c)
{
    if (c >= '0' && c <= '9') {
        return c;
    }
    if (c >= 'a' && c <= 'z') {
        return c;
    }
    if (c >= 'A' && c <= 'Z') {
        return c + 'a' - 'A';
    }
    return 0;
}



bool isPalindrome(char * s){
    int len = strlen(s);
    int left = 0;
    int right = len - 1;
    while (left < right) {
        char left_char;
        char right_char;
        while (left < right && !isalnum(s[left])) {
            //printf("left 0 = %c\n", *left);
            left++;
        }
        
        while (left < right && !isalnum(s[right])) {
            //printf("right 0 = %c\n", *right);
            right--;
        }
        
        if (left < right) {
            if (trans_char(s[left]) == trans_char(s[right])) {
                left++;
                right--;
            } else {
                return false;
            }
        }
    }
    return true;
}